From : William J Nolan (wnolan+@andrew.cmu.edu)
Subject : Copper Wrap
Some good copper wrap docs are in 8wayscroller.lha which should be in
the dev/asm directory of any aminet site.  (At least that's where I
learned it from).  Basic theory is:

    For left/right scrolling, every time you get to the end of a 
    tile "column", increase the bitmap pointers and draw a new column
    in.  This just requires a little bit of extra memory at the end of
    the bitmap so that you don't go off the edge, but it's very
    memory efficient.  Hardware scrolling is used to scroll.

    For up/down it is a little harder.  You can still use hardware
    scrolling, but after you've scrolled down by one tile "row",
    you need to introduce a copper instruction that starts at the
    bottom (or top, depending on whether you're scrolling down or
    up) and works its way to the other end that changes the bitmap
    pointers to display the "other part" of the bitmap.  This requires
    an extra 3 tile rows.

The advantages to this method are speed, since it's all hardware scrolling
and pointer updating, and  you only have to blit one row or column of tiles
at a time, and memory efficiency (only need 4 extra columns, three extra
rows of tiles).  The disadvantage is that its very hard to understand
:).  If I ever finish this game, I will release some source
demonstrating it in blitz...